﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BLGPS;
using Utilities.UI;

public partial class UserControls_ctlFiltros : System.Web.UI.UserControl
{
    public event Action Consultar;

    public Empresa Empresa
    {
        get { return (Empresa)Session["EmpresaGlobal"]; }
    }

    public ColeccionVehiculo VehiculosSeleccionados
    {
        get { return (ColeccionVehiculo)Session["VehiculosSeleccionados"]; }
        set { Session["VehiculosSeleccionados"] = value; }
    }
       

    public DateTime FechaDesde
    {
        get { return Convert.ToDateTime(txtDesde.Text); }
        set { txtDesde.Text= value.ToShortDateString(); }
    }

    public DateTime FechaHasta
    {
        get { return Convert.ToDateTime(txtHasta.Text); }
        set { txtHasta.Text = value.ToShortDateString(); }
    }


    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {           
            chkFlotas.Fill<ColeccionFlota, Flota>(Empresa.Flotas, "Descripcion");
            chkTiposVehiculo.Fill<ColeccionTipoVehiculo, TipoVehiculo>(ColeccionTipoVehiculo.Tipos, "Descripcion");
            grdVehiculos.Fill(Empresa.Vehiculos);
        }

    }

    protected void chkFlotas_SelectedIndexChanged(object sender, EventArgs e)
    {
        FilterVehicles();
    }
    protected void chkTiposVehiculo_SelectedIndexChanged(object sender, EventArgs e)
    {
        FilterVehicles();
    }

    private void FilterVehicles()
    {
        ColeccionFlota flotasSeleccionadas = chkFlotas.GetSelectedItems<ColeccionFlota, Flota>(Empresa.Flotas);
        ColeccionTipoVehiculo tiposSeleccionados = chkTiposVehiculo.GetSelectedItems<ColeccionTipoVehiculo, TipoVehiculo>(ColeccionTipoVehiculo.Tipos);

        //si no selecciona ninguna, agrego todos para que muestre el listado completo
        if (flotasSeleccionadas.Count == 0)
        {
            flotasSeleccionadas.AddRange(Empresa.Flotas);
        }

        if (tiposSeleccionados.Count == 0)
        {
            tiposSeleccionados.AddRange(ColeccionTipoVehiculo.Tipos);
        }
        ColeccionVehiculo vehiculos = new ColeccionVehiculo();

        VehiculosSeleccionados = new ColeccionVehiculo();
        foreach (var item in Empresa.Vehiculos)
        {
            if (tiposSeleccionados.Exists(t=>t.Id==item.TipoVehiculo.Id) && flotasSeleccionadas.Exists(f=>f.Id ==item.Flota.Id))
            {
                VehiculosSeleccionados.Add(item);
            }
        }
         
        grdVehiculos.Fill(VehiculosSeleccionados);

    }
    
    protected void cmdConsultar_Click(object sender, EventArgs e)
    {
        ColeccionVehiculo seleccionados = new ColeccionVehiculo();

        foreach (GridViewRow row in grdVehiculos.Rows)
        {
            CheckBox chk = (CheckBox)row.FindControl("chk");
            if (chk.Checked)
            {
                seleccionados.Add((Vehiculo)grdVehiculos.GetItem(Empresa.Vehiculos, row.RowIndex));
            }
        }
#warning chequear q haya alguno seleccionado
#warning chequear valores validos en las fechas

        VehiculosSeleccionados = seleccionados;
        if (true)//<-resultado del chequeo de tipos
        {
            Consultar();
        }
        else
        {
            ScriptManager.RegisterStartupScript(this, this.GetType(), "", "ShowMessage('Aca va el emnsaje de error');", true);
        }
        
       
    }

    protected void chkAll_CheckedChanged(object sender, EventArgs e)
    {
        foreach (GridViewRow row in grdVehiculos.Rows)
        {
            ((CheckBox)row.FindControl("chk")).Checked = ((CheckBox)sender).Checked;
        }
    }

}

/*  <div id="accordionTipo">
        <h3>
            <a href="#">Tipo Vehiculo</a></h3>
        <div>
            <asp:CheckBoxList ID="chkTiposVehiculo" runat="server" AutoPostBack="True" 
                onselectedindexchanged="chkTiposVehiculo_SelectedIndexChanged"  >
            </asp:CheckBoxList>
        </div>
    </div>
    <div id="accordionFlotas">
        <h3>
            <a href="#">Flota</a></h3>
        <div>
            <asp:CheckBoxList ID="chkFlotas" runat="server" AutoPostBack="True" 
                onselectedindexchanged="chkFlotas_SelectedIndexChanged">
            </asp:CheckBoxList>
        </div>
    </div>*/